# v0.27.0

# 功能测试

## MOSN 对接 Istio v1.10.6

+ 参考[快速开始](https://mosn.io/docs/quick-start/istio/) 文档制作全新的 proxyv2 镜像
+ 使用 minikube 搭建 k8s 环境，并且安装部署 Istio，设置新制作的镜像为数据面

```
kubectl create namespace istio-system
istioctl manifest apply --set .values.global.proxy.image=${MOSN IMAGE} --set meshConfig.defaultConfig.binaryPath="/usr/local/bin/mosn"
```

+ 参考 [Bookinfo](https://istio.io/latest/docs/examples/bookinfo/) 执行相关测试用例
  + 默认场景，不断刷新页面可以看到三个不同的页面切换
  + 验证按版本路由的功能，只能访问其中一个版本
  + 验证按照权重路由的功能，v1 和 v3 各自有 50% 的概率出现，v2 不会出现
  + 验证登录能力，登录后只能看到 v2 版本，否则只能看到 v1 版本

+ 相关测试用例全部符合预期

+ 在 Bookinfo 场景验证的能力包括
  + 基础的 xds 配置解析能力
  + 基于 istio v1.10.6 规则下配置的透明劫持能力
  + 基于 istio v1.10.6 规则下 TLS 加密的能力
  + 基于 HTTP 协议的基础的路由转发能力


## Istio 1.5.2 版本兼容性测试

```
make istio-1.5.2
make unit-test-istio
```
+ 上述兼容性测试已加入 CI 流程


# 基准测试

+ 使用 [sofaload](https://github.com/antJack/sofaload) 在本地搭建简单的性能测试

```Bash
sofaload -D 10 --qps=2000 -c 200 -t 16 -p sofarpc sofarpc://127.0.0.1:12200
```

```
starting benchmark...
Application protocol: sofarpc

finished in 10.00s, 2000.00 req/s, 2.41MB/s
requests: 20000 total, 20000 started, 20000 done, 20000 succeeded, 0 failed, 0 errored, 0 timeout
sofaRPC status codes:
	20000 success, 0 error, 0 server exception, 0 unknown
	0 server threadpool busy, 0 error comm, 0 no processor, 0 timeout
	0 client send error, 0 codec exception, 0 connection closed, 0 server serial exception
	0 server deserial exception
traffic: 24.11MB (25280000) total, 390.63KB (400000) headers (space savings 0.00%), 23.73MB (24880000) data
                     min         max         mean         sd        +/- sd
time for request:      123us      5.39ms       249us       245us    96.74%
time for connect:        4us        91us        18us        17us    93.50%
req/s           :       9.50       10.60       10.00        0.41    77.00%

  Latency  Distribution
   50%        199us
   75%        256us
   90%        352us
   95%        434us
   99%       1.11ms
```
